FFmpeg

FFmpeg

Последняя версия: 7.0
Скачали: 11

FFmpeg — консольный мультимедийный фреймворк для работы с видео, аудио, субтитрами, потоками, контейнерами и метаданными. В отличие от привычных видеоконвертеров с окном, лентой инструментов и кнопкой Старт, FFmpeg работает через командную строку: пользователь задаёт входной файл, параметры обработки и выходной файл одной командой. Основной инструмент ffmpeg читает файлы, сетевые потоки, устройства захвата, затем фильтрует, перекодирует или копирует потоки в нужный контейнер. Синтаксис строится вокруг входов -i, параметров кодирования, фильтров и выходного URL или имени файла.

FFmpeg скриншот 1

FFmpeg используют для конвертации видео в MP4, WebM, MKV и другие контейнеры, сжатия роликов, извлечения аудио, нарезки фрагментов, создания скриншотов из видео, подготовки файлов для публикации на сайте, анализа технических параметров через ffprobe, записи экрана и работы с потоковой передачей. Внутри проекта есть не только программа ffmpeg, но и ffprobe для анализа мультимедийных потоков, ffplay для быстрого воспроизведения, а также библиотеки libavcodec, libavformat, libavfilter, libavdevice, libswscale и libswresample, которые применяются в других приложениях.

Главное отличие FFmpeg от большинства конвертеров — точный контроль. Пользователь не выбирает готовый пресет в окне, а прямо задаёт кодек, битрейт, качество, разрешение, частоту кадров, аудиодорожки, субтитры, фильтры и порядок потоков. За счёт этого FFmpeg подходит не только для единичной конвертации видео, но и для повторяемых задач: пакетной обработки папки с роликами, серверного транскодирования, автоматического создания превью, подготовки видеоархивов и проверки файлов в скриптах.

Программа рассчитана на пользователей, которым важнее управляемость, чем визуальный интерфейс. Новичку приходится привыкать к синтаксису командной строки, зато опытный пользователь получает единый инструмент для операций, которые в графических программах часто разбросаны по разным меню: перекодирование, ремультиплексирование, извлечение дорожек, наложение фильтров, запись, потоковая передача, анализ и проверка результата.

Основные характеристики FFmpeg

ПараметрОписание
Тип программыконсольный мультимедийный фреймворк
Основной инструментffmpeg
Дополнительные инструментыffprobe, ffplay
Основные библиотекиlibavcodec, libavformat, libavfilter, libavdevice, libswscale, libswresample
Интерфейскомандная строка
Основные задачикодирование, декодирование, транскодирование, mux, demux, фильтрация, воспроизведение, потоковая передача
ПлатформыLinux, macOS, Microsoft Windows, BSD, Solaris и другие системы
Работа с потокамиавтоматический выбор потоков или ручное управление через -map
Форматы выводазависят от контейнера, кодеков и конкретной сборки
ЛицензияLGPL 2.1 or later; при включении GPL-компонентов применяется GPL 2 or later

FFmpeg не привязан к одному типу файлов. Он работает с контейнерами, кодеками, потоками и фильтрами как с отдельными сущностями. Например, файл movie.mkv может содержать видеопоток H.264, несколько аудиодорожек AAC или AC3, субтитры SRT или ASS, главы и метаданные. FFmpeg позволяет скопировать часть этих потоков без перекодирования, заменить аудиодорожку, добавить субтитры, изменить контейнер, перекодировать только видео или построить новый файл из нескольких входных источников.

Такой подход важен для понимания программы. Расширение файла не равно кодеку: MP4 — контейнер, H.264 — видеокодек, AAC — аудиокодек, SRT — формат субтитров. FFmpeg работает на уровне этих компонентов, поэтому одна команда может менять контейнер без изменения качества, а другая — полностью перекодировать видео и аудио с новыми параметрами.

Интерфейс и логика работы

FFmpeg не имеет штатного графического окна, панели предпросмотра и кнопок вроде Open, Convert или Export. Основная рабочая область — Terminal, PowerShell, Command Prompt или другой командный интерпретатор. Команда строится по схеме:

ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...

Эта схема важна не формально, а практически: порядок параметров влияет на результат. Параметр перед -i относится к входу, параметр перед выходным файлом — к выходу. Глобальные параметры ставятся раньше входов и выходов. FFmpeg применяет большинство настроек к следующему указанному файлу, поэтому одна и та же команда с переставленными опциями способна дать другой результат.

Базовая команда выглядит так:

ffmpeg -i input.mov output.mp4

Здесь ffmpeg запускает программу, -i input.mov задаёт входной файл, а output.mp4 указывает выходной файл. Если не заданы кодеки, FFmpeg выбирает подходящие параметры по контейнеру и доступным кодекам сборки. Для простого преобразования этого достаточно, но для стабильного результата лучше явно задавать видеокодек, аудиокодек, качество и выбор потоков.

Скриншот FFmpeg в терминале при обработке WebP

Пример контролируемой конвертации в MP4:

ffmpeg -i input.mov -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 160k output.mp4

В этой команде -c:v libx264 задаёт кодирование видеопотока через H.264-кодировщик, -crf 23 управляет качеством для CRF-режима, -preset medium выбирает баланс скорости и эффективности кодирования, -c:a aac задаёт аудиокодек AAC, а -b:a 160k устанавливает аудиобитрейт. FFmpeg-обзор без этих элементов был бы неполным, потому что именно параметры командной строки заменяют в программе графические переключатели.

Главные элементы командной строки

ЭлементНазначение
-iзадаёт входной файл, устройство или поток
-fпринудительно задаёт формат входа или выхода
-c:vвыбирает видеокодек
-c:aвыбирает аудиокодек
-codec или -cвыбирает кодек для потока или копирование через copy
-mapвручную выбирает потоки для выходного файла
-vfприменяет видеофильтр
-afприменяет аудиофильтр
-filter_complexзадаёт сложный граф фильтров с несколькими входами и выходами
-ssзадаёт позицию перехода по времени
-tзадаёт длительность фрагмента
-toзадаёт конечную временную позицию
-frames:vограничивает количество видеокадров
-yперезаписывает выходной файл без вопроса
-nзапрещает перезапись существующего файла
-hide_bannerскрывает стартовый баннер, параметры сборки и версии библиотек
-loglevelуправляет подробностью вывода

Опция -c особенно важна: она выбирает декодер или кодировщик для конкретного потока, а специальное значение copy копирует поток без повторного кодирования. Например, команда ffmpeg -i input.mkv -map 0 -c copy output.mp4 пытается перенести все потоки из входного файла в выходной контейнер без перекодирования, если контейнер поддерживает эти типы потоков. Для видео это означает отсутствие потери качества на этапе кодирования, но не гарантирует совместимость: контейнер MP4 принимает не все дорожки, которые допустимы в MKV.

Опция -map решает задачу, которую в графических программах обычно выполняет окно выбора дорожек. Без -map FFmpeg сам выбирает поток: для видео — поток с наибольшим разрешением, для аудио — поток с максимальным числом каналов, для субтитров — первый подходящий поток с учётом типа субтитров и контейнера. При использовании -map в выходной файл попадают только выбранные пользователем потоки.

Возможности FFmpeg

Конвертация видео

FFmpeg конвертирует видео между контейнерами и кодеками. Это разные операции, поэтому команды делятся на два типа: смена контейнера без перекодирования и полноценное транскодирование.

Смена контейнера без перекодирования нужна, когда кодеки уже подходят, но требуется другой контейнер:

ffmpeg -i input.mkv -c copy output.mp4

Такая команда не пересчитывает изображение и звук. FFmpeg демультиплексирует входной контейнер, переносит совместимые потоки и собирает новый контейнер. Это быстрее перекодирования и не ухудшает качество, но работает только тогда, когда выходной контейнер поддерживает выбранные дорожки.

Полное транскодирование применяется, когда нужно изменить кодек, качество, разрешение, совместимость с устройствами или размер файла:

ffmpeg -i input.mov -c:v libx264 -crf 22 -preset slow -c:a aac -b:a 192k output.mp4

Эта команда создаёт MP4 с видео H.264 и аудио AAC. Такой вариант подходит для публикации ролика на сайте, передачи файла пользователю с обычным медиаплеером, подготовки материалов к загрузке в CMS или отправке через облачный диск.

Для WebM чаще используют VP9 или AV1 и Opus:

ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 32 -c:a libopus output.webm

WebM удобен для браузерного воспроизведения, но кодирование VP9 и AV1 обычно требует больше времени, чем H.264. При выборе формата нужно учитывать не только размер файла, но и совместимость с устройствами, браузерами и рабочим процессом.

Сжатие видео

Сжатие в FFmpeg выполняется через параметры кодировщика. Самый понятный сценарий — уменьшить размер файла при сохранении приемлемого визуального качества. Для H.264 часто используют CRF-режим:

ffmpeg -i input.mp4 -c:v libx264 -crf 24 -preset medium -c:a aac -b:a 128k output.mp4

-crf управляет качеством и размером: меньшие значения дают выше качество и больше файл, большие значения сильнее сжимают. -preset влияет на скорость кодирования и эффективность сжатия: более медленные пресеты дольше кодируют, но позволяют получить меньший файл при сопоставимом качестве. Важно не подменять сжатие одним только снижением битрейта: слишком низкий -b:v может дать заметные блоки, смазывание деталей и проблемы на динамичных сценах.

Для уменьшения размера можно дополнительно снизить разрешение:

ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output_720p.mp4

Фильтр scale=1280:-2 задаёт ширину 1280 пикселей, а высоту рассчитывает автоматически с сохранением пропорций и чётным значением. Чётная высота нужна для совместимости с распространёнными пиксельными форматами и кодеками.

Если ролик должен иметь предсказуемый размер или соответствовать лимиту передачи, применяют битрейт:

ffmpeg -i input.mp4 -c:v libx264 -b:v 2500k -c:a aac -b:a 128k output.mp4

Битрейт удобен для потокового вещания, вещательных профилей и технических регламентов. CRF удобнее для архивной и пользовательской конвертации, когда важнее качество, а не точный размер.

FFmpeg выполняет конвертацию изображения в WebP через libwebp

Работа с аудио

FFmpeg извлекает аудио из видео, меняет аудиокодек, битрейт, частоту дискретизации и количество каналов. Для извлечения аудиодорожки без перекодирования используется копирование потока:

ffmpeg -i input.mp4 -vn -c:a copy audio.m4a

-vn отключает видео в выходном файле, -c:a copy переносит аудиопоток как есть. Такой способ подходит, если аудио уже записано в нужном кодеке и контейнер выходного файла его поддерживает.

Для конвертации в MP3 применяется аудиокодировщик:

ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k audio.mp3

Для AAC:

ffmpeg -i input.wav -c:a aac -b:a 160k output.m4a

Для Opus:

ffmpeg -i input.wav -c:a libopus -b:a 96k output.opus

FFmpeg также меняет частоту дискретизации и число каналов:

ffmpeg -i input.wav -ar 48000 -ac 2 output.wav

-ar 48000 задаёт частоту 48 кГц, -ac 2 делает стерео. Такие команды применяются при подготовке звука для видеомонтажа, трансляции, подкаста, архивирования или объединения с видеодорожкой.

Обрезка, склейка и фрагментация

Обрезка видео в FFmpeg выполняется через -ss, -t и -to. Опция -ss задаёт начальную позицию, -t — длительность, -to — конечную позицию. Если -ss стоит до -i, FFmpeg сначала переходит к позиции во входном файле; если -ss стоит после входа, программа декодирует и отбрасывает данные до нужной временной метки. При копировании потоков точность зависит от ближайших ключевых кадров, а при перекодировании можно получить более точный фрагмент.

Быстро вырезать фрагмент без перекодирования:

ffmpeg -ss 00:01:30 -i input.mp4 -t 00:00:20 -c copy clip.mp4

Точно вырезать фрагмент с перекодированием:

ffmpeg -i input.mp4 -ss 00:01:30 -t 00:00:20 -c:v libx264 -crf 20 -c:a aac clip.mp4

При склейке файлов важно, чтобы параметры потоков совпадали. Для файлов с одинаковыми кодеками, разрешением, частотой кадров и параметрами аудио применяется concat demuxer. Сначала создаётся текстовый список:

file 'part1.mp4'file 'part2.mp4'file 'part3.mp4'

Затем выполняется команда:

ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4

Если параметры фрагментов различаются, безопаснее перекодировать общий результат. Иначе выходной файл может воспроизводиться с ошибками, рассинхронизацией или сбоями на стыках.

Работа с субтитрами

FFmpeg умеет копировать, извлекать, подключать и прожигать субтитры. Выбор зависит от задачи: сохранить субтитры отдельной дорожкой или превратить их в часть видеокадра.

Скопировать все потоки из MKV в новый MKV:

ffmpeg -i input.mkv -map 0 -c copy output.mkv

Извлечь первую дорожку субтитров:

ffmpeg -i input.mkv -map 0:s:0 subtitles.srt

Добавить внешний SRT-файл как отдельную дорожку:

ffmpeg -i input.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4

Прожечь субтитры в картинку:

ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt" -c:a copy output.mp4

Прожиг нужен, когда устройство или площадка не поддерживает отдельные субтитры. Минус такого способа — текст становится частью изображения, его нельзя отключить или отредактировать без повторной обработки видео.

Фильтры видео и аудио

Фильтры — одна из сильных сторон FFmpeg. Простые фильтры задаются через -vf для видео и -af для аудио. Сложные графы, где участвуют несколько входов, применяют через -filter_complex. Параметр -filter создаёт граф фильтров для потока, а для нескольких входов и выходов используется -filter_complex.

Изменить размер:

FFmpeg скриншот 2

ffmpeg -i input.mp4 -vf "scale=1920:-2" -c:v libx264 -crf 22 -c:a copy output.mp4

Обрезать края кадра:

ffmpeg -i input.mp4 -vf "crop=1280:720:0:0" -c:a copy output.mp4

Повернуть видео:

ffmpeg -i input.mp4 -vf "transpose=1" -c:a copy output.mp4

Изменить частоту кадров:

ffmpeg -i input.mp4 -r 30 -c:v libx264 -crf 22 -c:a aac output_30fps.mp4

Увеличить громкость:

ffmpeg -i input.mp4 -af "volume=1.5" -c:v copy output.mp4

Нормализовать громкость через loudnorm:

ffmpeg -i input.mp4 -af "loudnorm" -c:v copy output.mp4

Для наложения изображения используется overlay:

ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=20:20[out]" -map "[out]" -map 0:a? -c:a copy output.mp4

Здесь [0:v] — видеопоток из первого входа, [1:v] — изображение из второго входа, overlay=20:20 размещает картинку с отступом 20 пикселей от левого верхнего угла, а -map 0:a? добавляет аудио из первого файла, если аудиодорожка есть. Для сложных фильтров используется тот же принцип связок входов и выходов через метки.

Скриншоты и превью из видео

FFmpeg создаёт одиночный кадр, серию кадров или набор превью по временным интервалам. Для одного кадра используется -ss и -frames:v 1:

ffmpeg -ss 00:00:10 -i input.mp4 -frames:v 1 preview.jpg

Если нужно получить кадр в PNG:

ffmpeg -ss 00:00:10 -i input.mp4 -frames:v 1 preview.png

Серия кадров раз в секунду:

ffmpeg -i input.mp4 -r 1 frames/frame_%03d.jpg

Шаблон %03d создаёт нумерацию с тремя цифрами: frame_001.jpg, frame_002.jpg, frame_003.jpg. FFmpeg также умеет собирать видео из последовательности изображений, используя похожий шаблон имён.

FFmpeg создаёт PNG-кадр из входного изображения

Ссылка:

Скриншоты полезны для проверки содержимого файла, создания обложки, подготовки миниатюр для сайта, контроля качества после перекодирования. При пакетной обработке можно автоматически создать превью для сотен роликов без открытия видеоредактора.

Поддерживаемые форматы и кодеки

FFmpeg работает с большим числом контейнеров, кодеков, протоколов, изображений, субтитров и устройств. Поддержка конкретного формата зависит от сборки: часть возможностей реализована внутри FFmpeg, часть подключается через внешние библиотеки, которые включаются при сборке через параметры ./configure. Например, поддержка некоторых внешних кодировщиков и декодировщиков включается отдельными флагами, такими как --enable-libaom, --enable-libvpx, --enable-libx264, --enable-libx265, --enable-libmp3lame, --enable-libdav1d.

Контейнеры

FFmpeg применяют с MP4, MOV, MKV, AVI, WebM, MPEG-TS, FLV, OGG, WAV, MP3, M4A и другими контейнерами. Контейнер задаёт упаковку потоков, но не всегда определяет кодеки. Например, MP4 часто содержит H.264 или H.265 с AAC, WebM — VP8, VP9, AV1 с Opus или Vorbis, MKV — широкий набор видео, аудио и субтитров.

Видеокодеки

В рабочих сценариях чаще встречаются H.264, H.265/HEVC, AV1, VP9, MPEG-2, MPEG-4 Part 2, ProRes, DNxHD/DNxHR, FFV1. Выбор зависит от задачи:

КодекГде используется
H.264универсальная совместимость, веб, мобильные устройства, архивы обычного качества
H.265/HEVCболее эффективное сжатие, 4K, современные устройства
AV1современное сжатие для веба и потоковых сценариев
VP9WebM, браузерное видео
ProResмонтажные промежуточные файлы
DNxHD/DNxHRмонтажные промежуточные файлы
FFV1архивирование без потерь

FFmpeg не делает один кодек лучшим для всех задач. Для отправки файла пользователю обычно удобнее H.264 в MP4. Для экономии места в архиве могут подойти H.265 или AV1. Для монтажа лучше использовать монтажные кодеки, которые легче декодируются и меньше нагружают рабочую станцию. Для долговременного технического архива применяют кодеки без потерь, но такие файлы занимают значительно больше места.

Аудиокодеки

В аудио часто используются AAC, MP3, Opus, Vorbis, FLAC, PCM, ALAC, AC3 и другие форматы. AAC подходит для MP4 и универсального воспроизведения, MP3 — для широкой совместимости, Opus — для речи и веб-сценариев, FLAC — для хранения без потерь, PCM — для монтажа и промежуточной обработки.

Пример конвертации WAV в FLAC:

ffmpeg -i input.wav -c:a flac output.flac

Пример конвертации WAV в Opus:

ffmpeg -i input.wav -c:a libopus -b:a 96k output.opus

Субтитры и метаданные

FFmpeg работает с текстовыми и встроенными субтитрами, дорожками в контейнерах, главами и метаданными. При ручном выборе потоков через -map можно сохранить нужные аудиодорожки, субтитры и главы. При автоматическом выборе потоков часть данных может не попасть в выходной файл, поэтому для файлов с несколькими дорожками безопаснее явно задавать -map 0.

ffprobe: анализ медиафайлов

ffprobe — отдельный инструмент из набора FFmpeg для анализа мультимедийных потоков. Он показывает информацию о контейнере, видеодорожках, аудиодорожках, субтитрах, длительности, разрешении, частоте кадров, кодеках, битрейте, метаданных и других параметрах. Информация выводится в человекочитаемом виде или в форматах, удобных для обработки скриптами: JSON, XML, CSV, compact, flat, ini.

Быстрая проверка файла:

ffprobe input.mp4

Вывод в JSON:

ffprobe -v error -show_streams -show_format -of json input.mp4

Показать только видеопотоки:

ffprobe -v error -select_streams v -show_streams input.mp4

Показать длительность контейнера:

ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4

ffprobe особенно полезен перед пакетной обработкой. Перед перекодированием коллекции файлов можно проверить, где уже используется нужный кодек, какие ролики имеют нестандартное разрешение, какие файлы содержат несколько аудиодорожек, где отсутствует звук, какие записи имеют переменную частоту кадров. Это снижает риск массовой обработки с неправильными параметрами.

В работе с сайтом ffprobe помогает автоматически получать технические данные для карточки видео: длительность, ширину, высоту, кодек, размер, наличие аудио. В медиасервере через ffprobe можно решить, нужно ли транскодировать файл или достаточно отдать его напрямую.

ffplay: быстрый просмотр файлов и потоков

ffplay — простой портативный медиаплеер на базе библиотек FFmpeg и SDL. Он используется для быстрого просмотра файла, проверки потока, тестирования фильтров и отладки мультимедийных сценариев.

Открыть файл:

ffplay input.mp4

Проверить сетевой поток:

ffplay http://example.com/stream.m3u8

Посмотреть результат фильтра без сохранения файла:

ffplay -vf "scale=1280:-2" input.mp4

ffplay не заменяет полноценный медиаплеер вроде VLC media player, но удобен в технической работе: команда открывает результат сразу из терминала, не требует создания временного файла и помогает быстро понять, корректно ли применяется фильтр.

Установка и проверка работоспособности

FFmpeg работает после появления исполняемых файлов ffmpeg, ffprobe и ffplay в системе. В Windows обычно используют папку с файлами и добавляют каталог bin в переменную Path, чтобы команды запускались из любой директории. В macOS и Linux FFmpeg часто доступен через терминал после установки соответствующего пакета или распаковки сборки. Процесс проверки везде одинаковый:

ffmpeg -version

Команда выводит сведения о сборке, параметрах конфигурации и версиях библиотек. Если терминал отвечает, что ffmpeg не является распознанной командой, исполняемый файл не находится в системном пути. В Windows это исправляется через Environment Variables и переменную Path; после изменения пути нужно открыть новое окно Command Prompt или PowerShell.

Для проверки ffprobe:

ffprobe -version

Для проверки ffplay:

ffplay -version

Если в сборке отсутствует ffplay, это не мешает конвертации и анализу файлов: основная обработка выполняется через ffmpeg, анализ — через ffprobe.

Что важно проверить после установки

  • команда ffmpeg -version запускается из любой папки;

  • команда ffprobe -version доступна в том же терминале;

  • путь к файлам с пробелами берётся в кавычки;

  • команда на тестовом файле создаёт выходной файл в ожидаемой папке;

  • в выводе ошибок нет сообщений о неподдерживаемом кодировщике;

  • при работе со скриптами используется полный путь или корректно настроенный Path.

Пример с путями в кавычках:

ffmpeg -i "D:\Video Projects\input file.mov" -c:v libx264 -c:a aac "D:\Video Projects\output file.mp4"

Кавычки обязательны, если в пути есть пробелы. Без них командная строка разделит путь на несколько аргументов, и FFmpeg не найдёт файл.

Практические инструкции

Как конвертировать видео в MP4

Для обычной конвертации в MP4 с H.264 и AAC подходит команда:

ffmpeg -i input.mov -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 160k output.mp4

Разбор параметров:

  • -i input.mov задаёт исходный файл;

  • -c:v libx264 кодирует видео в H.264;

  • -crf 23 задаёт уровень качества;

    FFmpeg скриншот 3

  • -preset medium выбирает баланс скорости и сжатия;

  • -c:a aac кодирует звук в AAC;

  • -b:a 160k задаёт аудиобитрейт;

  • output.mp4 задаёт итоговый файл.

Для ролика без звука команда может быть короче:

ffmpeg -i input.mov -c:v libx264 -crf 23 -preset medium -an output.mp4

-an отключает аудио. Это удобно для фоновых видео на сайте, превью, технических роликов и анимаций без звуковой дорожки.

Как уменьшить размер видео

Сначала нужно решить, что можно менять: качество, разрешение, кодек, аудиобитрейт или частоту кадров. Универсальный вариант — H.264 с CRF:

ffmpeg -i input.mp4 -c:v libx264 -crf 26 -preset medium -c:a aac -b:a 128k output_small.mp4

Если файл всё ещё слишком большой, можно снизить разрешение:

ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:v libx264 -crf 24 -preset medium -c:a aac -b:a 128k output_720p.mp4

Для вертикального видео лучше задавать высоту:

ffmpeg -i input.mp4 -vf "scale=-2:1280" -c:v libx264 -crf 24 -preset medium -c:a aac -b:a 128k output_vertical.mp4

Параметр -2 сохраняет пропорции и подбирает чётное значение. Это снижает риск проблем с кодированием и воспроизведением.

Как извлечь аудио из видео

Если аудиодорожку нужно сохранить без изменения:

ffmpeg -i input.mp4 -vn -c:a copy audio.m4a

Если нужен MP3:

ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k audio.mp3

Если нужен WAV для монтажа:

ffmpeg -i input.mp4 -vn -c:a pcm_s16le audio.wav

WAV занимает больше места, но удобен для дальнейшей обработки в аудиоредакторах. Для редактирования звука можно использовать отдельные программы, например Audacity, а FFmpeg оставить для извлечения, конвертации и пакетной подготовки файлов.

Как обрезать видео без перекодирования

Быстрый вариант:

ffmpeg -ss 00:02:00 -i input.mp4 -t 00:00:30 -c copy cut.mp4

Команда берёт фрагмент с 2-й минуты длительностью 30 секунд. Поскольку используется -c copy, видео и аудио не перекодируются. Такой способ подходит для быстрой нарезки длинных записей, но граница начала может попасть на ближайший ключевой кадр.

Точный вариант:

ffmpeg -i input.mp4 -ss 00:02:00 -t 00:00:30 -c:v libx264 -crf 20 -c:a aac cut_exact.mp4

При перекодировании FFmpeg точнее отрабатывает временную позицию, но операция занимает больше времени и заново кодирует изображение.

Как сделать скриншот из видео

Один кадр на 10-й секунде:

ffmpeg -ss 00:00:10 -i input.mp4 -frames:v 1 cover.jpg

Кадр в PNG:

ffmpeg -ss 00:00:10 -i input.mp4 -frames:v 1 cover.png

Несколько кадров по одному в секунду:

ffmpeg -i input.mp4 -r 1 frames/frame_%03d.jpg

Для сайта часто делают один кадр-обложку и несколько миниатюр. FFmpeg позволяет автоматизировать это в одном сценарии: сначала через ffprobe получить длительность, затем через ffmpeg извлечь кадры в нужных точках.

Как проверить кодек, битрейт и дорожки

Команда для полного анализа:

ffprobe -v error -show_format -show_streams input.mp4

JSON-вывод для скрипта:

ffprobe -v error -show_format -show_streams -of json input.mp4

Вывод только видеопотока:

ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,width,height,avg_frame_rate,bit_rate -of default=noprint_wrappers=1 input.mp4

Вывод только аудиопотоков:

ffprobe -v error -select_streams a -show_entries stream=index,codec_name,channels,sample_rate,bit_rate -of table input.mp4

Такой анализ помогает понять, нужно ли перекодирование. Если файл уже в H.264/AAC и подходит по разрешению, можно ограничиться сменой контейнера или копированием потоков. Если кодек не подходит устройству или сайту, нужно транскодирование.

Как записать экран

FFmpeg умеет захватывать видео и аудио с устройств. Для Linux с X11 используется x11grab:

ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 output.mkv

Для захвата X11-дисплея используются -f x11grab, -video_size, -framerate и вход :0.0; смещение области задаётся через формат :0.0+10,20.

Для Windows в типичных сборках используется DirectShow-устройство:

ffmpeg -f dshow -i video="screen-capture-recorder" output.mkv

Для macOS применяется AVFoundation:

ffmpeg -f avfoundation -i "1:none" output.mov

Названия устройств нужно смотреть в конкретной системе. Для профессиональной записи экрана с настройкой сцен, микрофона, источников и потоковой передачи удобнее OBS Studio, а FFmpeg сильнее в автоматизации, фоновой записи и технической обработке результата.

Плюсы и минусы FFmpeg

Плюсы:

  • программа даёт точный контроль над кодеками, контейнерами, фильтрами и потоками;

  • ffmpeg, ffprobe и ffplay закрывают обработку, анализ и быстрый просмотр мультимедиа;

  • командная строка хорошо подходит для пакетной обработки и автоматизации;

  • -map позволяет вручную выбрать видеодорожки, аудиодорожки, субтитры и дополнительные потоки;

  • -c copy выполняет ремультиплексирование без повторного кодирования, когда контейнер совместим с потоками;

  • ffprobe выводит данные в JSON, XML, CSV и другие форматы, удобные для скриптов;

  • фильтры позволяют менять размер, кадрировать, поворачивать, нормализовать звук, накладывать изображение и строить сложные цепочки обработки;

  • программа работает на Windows, Linux, macOS, BSD, Solaris и других системах;

  • открытая лицензия позволяет использовать FFmpeg в разных сценариях при соблюдении условий LGPL/GPL.

Минусы:

  • нет штатного графического интерфейса;

  • новичку сложно сразу понять порядок параметров и различие между входными, выходными и глобальными опциями;

  • команды с несколькими дорожками требуют аккуратного использования -map;

  • неудачный выбор контейнера, кодека или пиксельного формата приводит к ошибкам совместимости;

  • -c copy не применим к задачам, где нужен фильтр, изменение размера, прожиг субтитров или смена кодека;

  • поддержка конкретных кодировщиков зависит от сборки;

  • при пакетной обработке ошибка в команде повторяется на всех файлах;

  • для коммерческого продукта нужно отдельно контролировать лицензию сборки и внешних библиотек.

FFmpeg не стоит оценивать как неудобный видеоконвертер. Это инструмент другого типа. В графической программе пользователь видит список пресетов и запускает обработку кнопкой. В FFmpeg он сам задаёт параметры. За счёт этого программа сложнее при первом знакомстве, но точнее в регулярной работе.

FFmpeg скриншот 4

Системные требования

У FFmpeg нет единого набора требований в стиле минимальный процессор, 4 ГБ RAM и столько-то места на диске, потому что программа существует в разных сборках и выполняет задачи разной тяжести. Для запуска нужен совместимый исполняемый файл, операционная система, терминал и доступ к входным/выходным файлам. Проект компилируется и работает на Linux, Mac OS X, Microsoft Windows, BSD, Solaris и других системах, а также в разных архитектурах и конфигурациях сборки.

Практические требования по сценариям

СценарийЧто влияет на скорость и стабильность
Смена контейнера через -c copyскорость диска, размер файла, совместимость потоков
Конвертация 1080p в H.264процессор, выбранный preset, фильтры, скорость чтения/записи
Конвертация 4K в H.265 или AV1процессор, аппаратное ускорение, память, охлаждение, длительность ролика
Пакетная обработка сотен файловдиск, CPU, правильный скрипт, логирование ошибок
Фильтры scale, crop, overlayCPU/GPU, разрешение, количество фильтров
Запись экранаустройство захвата, частота кадров, диск, кодек, аудиоустройство
Анализ через ffprobeскорость чтения файла, доступность контейнера и потоков

Для простого анализа через ffprobe и ремультиплексирования без перекодирования требования низкие: программа в основном читает и записывает данные. Для кодирования 4K, особенно в H.265 или AV1, нагрузка резко выше. При сложных фильтрах FFmpeg не просто пересобирает файл, а декодирует кадры, применяет операции к каждому кадру и заново кодирует результат.

Диск и место под временные файлы

FFmpeg обычно пишет результат сразу в указанный выходной файл. Для перекодирования не всегда нужны крупные временные файлы, но свободное место всё равно критично: выходной файл может занимать гигабайты, а при ошибке диска операция завершится неудачно. При работе с промежуточными кодеками ProRes, DNxHD/DNxHR, FFV1 или WAV размер результата заметно выше, чем у пользовательского MP4.

CPU и GPU

Процессор важен для программного кодирования и фильтрации. Чем выше разрешение, сложнее кодек и медленнее пресет, тем дольше идёт обработка. Аппаратное ускорение может использовать GPU или специализированные блоки кодирования, но конкретные возможности зависят от сборки FFmpeg, драйверов, видеокарты и выбранного кодека. Внешние библиотеки и аппаратные технологии подключаются на этапе сборки, включая AMD AMF/VCE и Intel QuickSync Video.

Оперативная память

Для обычной конвертации одного файла FFmpeg не требует большого объёма памяти, но сложные фильтры, высокое разрешение, несколько входов, параллельные процессы и обработка больших кадров увеличивают расход RAM. При пакетной обработке безопаснее запускать ограниченное число процессов одновременно, а не кодировать десятки файлов параллельно.

Сравнение с аналогами

FFmpeg нельзя честно сравнивать только с обычными видеоконвертерами. Он одновременно является программой командной строки, набором библиотек, средством анализа файлов и базой для других инструментов. Поэтому сравнение уместнее строить по сценариям: ручная конвертация, пакетная обработка, автоматизация, монтаж, потоковое вещание, работа с контейнерами.

ПрограммаИнтерфейсСильная сторонаГде сильнее FFmpegГде удобнее аналог
HandBrakeграфический интерфейс и очередьручное транскодирование видеосложные команды, скрипты, работа с потоками и фильтрамибыстрый выбор пресета без изучения синтаксиса
Avidemuxграфический интерфейспростая нарезка и базовое кодированиепакетные сценарии, ffprobe, сложные фильтрыручные правки в окне
VLC media playerграфический плеервоспроизведение и базовая конвертацияточное управление кодеками, потоками и параметрамипросмотр файлов и быстрая пользовательская конвертация
Shotcutвидеоредактор с монтажной шкалоймонтаж, визуальная работа с клипамиавтоматическая обработка, серверные сценарии, анализмонтаж с дорожками, клипами и предпросмотром
Format Factoryграфический конвертерпростая массовая конвертациягибкость параметров и контроль потоковпользовательская конвертация без командной строки
Any Video Converterграфический конвертерпонятные пресетынестандартные контейнеры, автоматизация, скриптыразовые задачи для новичка
XMedia Recodeграфический интерфейсдетальные настройки кодирования в окнеработа из терминала и интеграция в скриптынастройка кодирования без команд
MediaCoderграфический интерфейспродвинутые настройки транскодированияпрозрачная командная автоматизациявизуальная очередь заданий

FFmpeg и HandBrake

HandBrake удобен, когда пользователь хочет открыть файл, выбрать пресет и получить готовый MP4 или MKV без изучения командной строки. FFmpeg лучше подходит, когда нужна серия однотипных операций, точный выбор потоков, автоматическая обработка по расписанию, создание превью, анализ через ffprobe, потоковая передача или обработка файлов на сервере.

Для домашнего пользователя, которому нужно один раз сжать ролик, HandBrake проще. Для администратора, который обрабатывает сотни файлов в папке, FFmpeg практичнее: одну команду можно вставить в скрипт и повторять без ручных кликов.

FFmpeg и Avidemux

Avidemux рассчитан на визуальную работу: открыть ролик, выбрать фрагмент, выполнить простую обработку. FFmpeg делает те же базовые операции командами, но выигрывает при повторяемости. Если нужно каждый день нарезать записи по времени, извлекать аудио, создавать скриншоты и складывать результат в папки, команда или скрипт с FFmpeg быстрее ручной работы.

Avidemux удобнее для пользователя, который хочет видеть видео перед обрезкой. FFmpeg удобнее, когда временные метки уже известны или поступают из таблицы, базы данных, логов, монтажного листа.

FFmpeg и VLC media player

VLC — прежде всего медиаплеер. Он открывает множество форматов и содержит базовые функции конвертации, но его основная задача — воспроизведение. FFmpeg — инструмент обработки. Он не заменяет удобный плеер, зато позволяет задать такие параметры, которые в графическом окне VLC либо скрыты, либо недоступны.

При просмотре фильма или проверке ролика удобнее VLC. При подготовке набора файлов для сайта, извлечении дорожек, изменении кодеков и создании скриншотов удобнее FFmpeg.

FFmpeg и Shotcut

Shotcut — видеоредактор. Он нужен для монтажа, работы с клипами, таймлайном, переходами, текстом и визуальным предпросмотром. FFmpeg не предназначен для комфортного творческого монтажа. Его зона — точные технические операции: конвертация, фильтры, автоматизация, потоковая передача, анализ параметров.

Если нужно собрать ролик из фрагментов вручную, выбрать удачные кадры и отрегулировать монтаж, лучше видеоредактор. Если нужно автоматически привести сотни файлов к одному формату, лучше FFmpeg.

Отзывы пользователей и профильных журналов

Мнение профильных изданий

Технические издания обычно описывают FFmpeg как один из ключевых инструментов для работы с мультимедиа через командную строку. How-To Geek называет FFmpeg полезной бесплатной программой командной строки для аудио и видео, подчёркивая открытый характер инструмента и широкий охват задач. XDA Developers описывает FFmpeg как бесплатный open-source инструмент командной строки для конвертации и обработки аудио- и видеофайлов.

Tom’s Hardware освещал развитие оптимизаций FFmpeg и отдельно подчёркивал, что громкие ускорения относятся к конкретным функциям или фильтрам, а не ко всей программе целиком. Такой контекст важен: FFmpeg активно оптимизируется, но скорость зависит от кодека, фильтра, процессора, сборки и конкретной команды.

Linux-издания вроде Phoronix регулярно рассматривают крупные релизы FFmpeg как значимые события для открытой мультимедийной инфраструктуры. Это отражает реальное положение программы: FFmpeg часто находится не на виду у обычного пользователя, но работает внутри медиасистем, приложений, конвертеров и серверных цепочек обработки.

Усреднённое мнение пользователей

Пользовательские отзывы обычно сходятся в одном: FFmpeg ценят за мощность, гибкость и поддержку множества задач, но порог входа выше, чем у графических конвертеров. На G2 сводка отзывов отмечает, что пользователи хвалят гибкость и контроль над обработкой аудио и видео, а среди сложностей выделяют крутую кривую обучения для новичков.

На Capterra FFmpeg представлен как программа для аудиообработки и мультимедийных задач, а пользовательская оценка там строится на небольшом числе отзывов. Такие агрегаторы полезны не как техническая документация, а как индикатор восприятия: пользователи ценят результат, но часто нуждаются в примерах команд, оболочках или готовых сценариях.

Что это значит для выбора программы

FFmpeg хорошо подходит тем, кто готов работать через терминал, сохранять команды, читать вывод ошибок и проверять результат через ffprobe. Пользователь, которому нужен визуальный интерфейс и кнопки, быстрее начнёт с HandBrake, XMedia Recode или Format Factory. Но при росте количества файлов и требований к автоматизации FFmpeg становится заметно сильнее: одна команда превращается в повторяемый процесс.

Безопасность, лицензия и юридические ограничения

FFmpeg распространяется под LGPL 2.1 or later. Если в сборку включены GPL-компоненты, условия GPL 2 or later применяются ко всему FFmpeg. Проприетарной коммерческой лицензии, которую можно купить вместо соблюдения LGPL/GPL, у проекта FFmpeg нет.

Для обычного пользователя это означает, что программу можно применять бесплатно при соблюдении лицензии. Для разработчика, который встраивает FFmpeg в продукт, ситуация сложнее: нужно учитывать способ линковки, состав сборки, внешние библиотеки, параметры --enable-gpl, --enable-nonfree, распространение бинарников и исходных кодов, требования к уведомлениям и лицензиям.

Почему сборка имеет значение

Одна сборка FFmpeg может содержать только компоненты, совместимые с LGPL, другая — включать GPL-библиотеки, третья — использовать компоненты с дополнительными ограничениями. Подключение внешних библиотек требует явного включения через ./configure, а некоторые библиотеки меняют лицензионный режим сборки.

Для личной обработки видео это редко становится проблемой. Для компании, которая распространяет приложение вместе с FFmpeg, это критичный блок. Ошибка в лицензировании способна затронуть не только юридическую сторону, но и возможность публикации продукта, обновлений и исходных компонентов.

Безопасность файлов

FFmpeg обрабатывает недоверенные медиафайлы, а мультимедийные форматы сложны. Проект уделяет внимание безопасности и выпускает исправления для стабильных веток при обнаружении проблем.

Практические правила безопасной работы:

  • не запускать непроверенные команды из интернета без понимания параметров;

  • не использовать -y в массовых скриптах без резервной копии;

  • проверять выходной файл перед удалением исходника;

  • не обрабатывать подозрительные файлы с повышенными правами;

  • хранить исходники до завершения проверки результата;

  • в рабочих системах логировать команды и вывод ошибок.

Типичные ошибки при работе с FFmpeg

Неправильный порядок параметров

FFmpeg применяет многие параметры к следующему входному или выходному файлу. Если параметр поставить не туда, программа выполнит другую операцию. Например, -ss до -i и после -i дают разное поведение при переходе по времени.

Неправильно для ожидаемой точности:

ffmpeg -ss 00:01:00 -i input.mp4 -c copy output.mp4

Эта команда быстрая, но при -c copy старт может быть привязан к ключевому кадру. Для точной обрезки используется перекодирование:

ffmpeg -i input.mp4 -ss 00:01:00 -t 00:00:30 -c:v libx264 -c:a aac output.mp4

Потеря аудиодорожек и субтитров

Без -map FFmpeg автоматически выбирает потоки. В файле с несколькими аудиодорожками программа может взять не ту дорожку, а данные и attachment-потоки автоматически не выбираются.

Для сохранения всех потоков лучше использовать:

ffmpeg -i input.mkv -map 0 -c copy output.mkv

Для сохранения видео, всех аудиодорожек и всех субтитров:

ffmpeg -i input.mkv -map 0:v -map 0:a -map 0:s -c copy output.mkv

Использование -c copy вместе с фильтрами

-c copy копирует поток без декодирования и перекодирования. Фильтр требует декодировать поток, изменить кадры или звук и снова закодировать. Поэтому команда с -vf и -c:v copy логически несовместима.

Неправильно:

ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:v copy output.mp4

Правильно:

ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:v libx264 -crf 23 -c:a copy output.mp4

Перезапись файлов

Параметр -y перезаписывает выходной файл без вопроса, -n запрещает перезапись. В одиночной команде -y удобен, но в скрипте он опасен: ошибка в имени файла может уничтожить уже готовый результат. В массовой обработке безопаснее использовать -n, отдельную папку вывода и лог ошибок.

Пробелы в путях

Пути с пробелами нужно брать в кавычки:

ffmpeg -i "C:\Users\User\Videos\input file.mp4" "C:\Users\User\Videos\output file.mp4"

Без кавычек FFmpeg получит несколько отдельных аргументов и завершит команду ошибкой чтения входа или записи выхода.

Неподдерживаемый кодировщик

Команда может не выполниться, если сборка не содержит нужный кодировщик. Например, libx264, libx265, libvpx, libopus, libmp3lame зависят от сборки и подключённых библиотек. Перед массовой обработкой стоит проверить доступные кодировщики:

ffmpeg -encoders

Проверить конкретный кодировщик:

ffmpeg -h encoder=libx264

Неправильный контейнер

Не каждый контейнер поддерживает любой кодек и любой тип субтитров. MKV гибче MP4, но MP4 чаще нужен для совместимости с устройствами и вебом. Если FFmpeg сообщает, что поток не может быть записан в выбранный контейнер, нужно сменить контейнер, перекодировать поток или исключить неподдерживаемую дорожку через -map.

Для кого FFmpeg подходит

СценарийОценка
Разовая конвертация одного файламожно использовать, но графический аналог быстрее освоить
Регулярная обработка видеоFFmpeg подходит хорошо
Пакетная конвертация папокодин из сильных сценариев
Серверное транскодированиеподходит при правильной настройке команд и логов
Проверка параметров файловffprobe удобен и точен
Создание превью и кадровFFmpeg хорошо автоматизирует процесс
Монтаж с визуальной шкалойнужен видеоредактор, например Shotcut
Запись экрана с визуальными сценамиудобнее OBS Studio
Технический архивподходит при грамотном выборе кодека и контейнера
Работа без загрузки файлов в облакоподходит, потому что обработка выполняется локально

Новичкам

Новичку стоит начинать не со сложных графов фильтров, а с четырёх операций: конвертация в MP4, извлечение аудио, обрезка фрагмента, анализ через ffprobe. После этого проще понять, как устроены потоки, почему нужен -map, чем контейнер отличается от кодека и почему -c copy не меняет качество.

Минимальный набор команд для старта:

ffmpeg -i input.mov output.mp4ffmpeg -i input.mp4 -vn audio.mp3ffmpeg -ss 00:01:00 -i input.mp4 -t 00:00:30 -c copy clip.mp4ffprobe -show_streams input.mp4

Опытным пользователям

Опытному пользователю FFmpeg даёт полный контроль: можно создавать разные выходы из одного входа, выбирать дорожки по языку, делать несколько версий ролика, анализировать параметры через JSON, встраивать команды в Python, Bash, PowerShell или серверную очередь.

Пример создания двух версий видео из одного входа:

ffmpeg -i input.mp4 \-map 0:v -map 0:a -c:v libx264 -crf 22 -c:a aac output_high.mp4 \-map 0:v -map 0:a -vf "scale=1280:-2" -c:v libx264 -crf 25 -c:a aac output_720p.mp4

Для бизнеса и серверной обработки

В рабочих системах FFmpeg ценен предсказуемостью и автоматизацией. Команды можно хранить в конфигурации, логировать, запускать по очереди, применять к файлам после загрузки и проверять через ffprobe. Для сайта это означает автоматическое создание MP4/WebM-версий, обложек, технических метаданных и контроль ошибок.

FFmpeg скриншот 5

В таком сценарии важно:

  • не удалять исходник до успешной проверки результата;

  • сохранять лог команды и stderr;

  • использовать ffprobe до и после обработки;

  • явно задавать -map, кодеки и контейнеры;

  • проверять код возврата процесса;

  • разделять временные и финальные файлы;

  • тестировать команды на коротких образцах перед запуском на архиве.

Практические сценарии использования

Подготовка видео для сайта

Для сайта обычно нужен файл в MP4 с H.264 и AAC, разумным разрешением и контролируемым размером. Команда:

ffmpeg -i input.mov -vf "scale=1920:-2" -c:v libx264 -crf 23 -preset medium -pix_fmt yuv420p -c:a aac -b:a 128k output.mp4

-pix_fmt yuv420p повышает совместимость с плеерами и браузерами, потому что не все устройства корректно воспроизводят видео с другими пиксельными форматами. После обработки файл проверяется:

ffprobe -v error -show_streams -show_format output.mp4

Создание видеообложки

Кадр на 5-й секунде:

ffmpeg -ss 00:00:05 -i input.mp4 -frames:v 1 cover.jpg

Если в начале ролика заставка или чёрный экран, лучше выбрать позицию ближе к содержательному фрагменту:

ffmpeg -ss 00:00:20 -i input.mp4 -frames:v 1 cover.jpg

Подготовка аудио для публикации

Извлечь и нормализовать звук:

ffmpeg -i input.mp4 -vn -af "loudnorm" -c:a libmp3lame -b:a 192k podcast.mp3

Для рабочего WAV:

ffmpeg -i input.mp4 -vn -af "loudnorm" -c:a pcm_s16le podcast.wav

Удаление звука из видео

ffmpeg -i input.mp4 -c:v copy -an silent.mp4

-an отключает аудио. Видео копируется без перекодирования, если контейнер подходит.

Замена аудиодорожки

ffmpeg -i video.mp4 -i new_audio.wav -map 0:v:0 -map 1:a:0 -c:v copy -c:a aac -shortest output.mp4

-map 0:v:0 берёт видео из первого файла, -map 1:a:0 берёт аудио из второго файла, -shortest завершает файл по самому короткому потоку. Это полезно для замены озвучки, синхронизации ролика с новой дорожкой или подготовки обучающих материалов.

Создание GIF из видео

ffmpeg -ss 00:00:03 -i input.mp4 -t 00:00:04 -vf "fps=12,scale=640:-1:flags=lanczos" output.gif

GIF плохо подходит для длинных и детализированных роликов: файл быстро становится большим. Для сайта чаще лучше использовать MP4 или WebM, а GIF оставлять для коротких фрагментов.

Создание WebP-анимации

ffmpeg -i input.mp4 -vf "fps=15,scale=640:-2" -c:v libwebp -lossless 0 -quality 75 output.webp

WebP-анимация может быть компактнее GIF и подходит для коротких превью, если целевая среда поддерживает формат.

Создание видео из изображений

ffmpeg -framerate 25 -i frame_%03d.png -c:v libx264 -pix_fmt yuv420p output.mp4

Если файлы называются frame_001.png, frame_002.png, frame_003.png, шаблон %03d подставляет номера по порядку. Для набора изображений с wildcard используется -pattern_type glob.

Работа с несколькими дорожками

Медиафайлы часто содержат несколько аудиодорожек: оригинальный звук, дубляж, комментарии, дорожку для слабослышащих. Без -map FFmpeg выберет дорожку автоматически. Для контроля нужно задавать потоки явно.

Сохранить всё:

ffmpeg -i input.mkv -map 0 -c copy output.mkv

Оставить только первое видео и первую аудиодорожку:

ffmpeg -i input.mkv -map 0:v:0 -map 0:a:0 -c copy output.mkv

Оставить все аудиодорожки и только первое видео:

ffmpeg -i input.mkv -map 0:v:0 -map 0:a -c copy output.mkv

Выбрать английскую аудиодорожку по метаданным языка:

ffmpeg -i input.mkv -map 0:v:0 -map 0:m:language:eng -c copy output.mkv

FFmpeg поддерживает выбор дорожки по языку через -map 0:m:language:eng, а также выбор всех потоков, конкретного потока и исключение дорожки отрицательным mapping.

Производительность и качество

Скорость FFmpeg определяется не одной настройкой. На неё влияют кодек, разрешение, фильтры, аппаратное ускорение, диск, процессор, количество потоков и выбранный пресет.

Что ускоряет обработку

  • копирование потоков через -c copy;

  • отсутствие фильтров;

  • быстрый пресет кодировщика;

  • аппаратное кодирование при корректной сборке и драйверах;

  • обработка файлов на быстром SSD;

  • ограничение параллельных задач до разумного числа;

  • предварительная проверка файлов через ffprobe.

Что замедляет обработку

  • AV1 и другие ресурсоёмкие кодеки;

  • 4K и 8K-материалы;

  • шумоподавление, деинтерлейсинг, масштабирование и сложные фильтры;

  • очень медленные пресеты;

  • запись результата на медленный диск;

  • одновременный запуск большого числа процессов;

  • перекодирование там, где достаточно -c copy.

Как выбирать качество

Для H.264 через libx264 в пользовательских задачах удобно начинать с CRF. Для черновиков можно использовать более высокие значения, для финального экспорта — ниже. Для стриминга и технических требований применяют битрейт, потому что там важно уложиться в канал или профиль.

Таблица выбора подхода:

ЗадачаПодход
сохранить качество и быстро сменить контейнер-c copy
уменьшить размер без точного лимитаCRF
уложиться в заданный канал-b:v, -maxrate, -bufsize
подготовить монтажный файлмонтажный кодек, например ProRes или DNxHR
архивировать без потерьFFV1, FLAC, PCM, подходящий контейнер
сделать файл для сайтаMP4 H.264/AAC или WebM при нужной поддержке

Частые вопросы

Есть ли у FFmpeg графический интерфейс?

У FFmpeg нет штатного графического интерфейса. Основная работа выполняется через командную строку. Отдельные программы используют FFmpeg внутри или дают графическую оболочку над его возможностями, но сам FFmpeg остаётся консольным инструментом.

Можно ли использовать FFmpeg бесплатно?

FFmpeg можно использовать бесплатно при соблюдении лицензии. Базовая лицензия — LGPL 2.1 or later; при включении GPL-компонентов применяется GPL 2 or later.

Почему одна команда работает на одном компьютере и не работает на другом?

Разные сборки FFmpeg содержат разные внешние библиотеки и кодировщики. Если команда использует libx264, libx265, libvpx, libopus, libmp3lame или аппаратный кодировщик, нужный компонент должен быть включён в сборку. Проверить доступные кодировщики можно командой ffmpeg -encoders.

Чем FFmpeg отличается от HandBrake?

HandBrake — графический транскодер с пресетами. FFmpeg — консольный фреймворк с более гибким управлением потоками, фильтрами, контейнерами и автоматизацией. Для разовой ручной конвертации проще HandBrake; для скриптов, серверной обработки и нестандартных задач сильнее FFmpeg.

Можно ли конвертировать видео без потери качества?

Да, если потоки копируются без перекодирования через -c copy и выходной контейнер совместим с этими потоками. Если применяется фильтр, изменение кодека, изменение разрешения или повторное сжатие с потерями, качество меняется.

Почему после конвертации пропала аудиодорожка?

Причина часто в автоматическом выборе потоков или неподдерживаемом контейнере. Для файлов с несколькими дорожками лучше использовать -map 0 или явно выбирать нужные аудиодорожки через -map.

Как узнать, какие кодеки поддерживает установленная сборка?

Список кодеков:

ffmpeg -codecs

Список кодировщиков:

ffmpeg -encoders

Список декодировщиков:

ffmpeg -decoders

Проверка конкретного кодировщика:

ffmpeg -h encoder=libx264

Почему файл после обработки стал больше?

Размер может увеличиться из-за более высокого битрейта, другого кодека, менее эффективного пресета, несжатого аудио, монтажного формата, сохранения дополнительных дорожек или изменения контейнера. Для контроля размера нужно задавать CRF, битрейт, разрешение, аудиобитрейт и проверять результат через ffprobe.

Итоговые рекомендации

FFmpeg стоит выбирать, когда нужна не просто конвертация видео, а контроль над процессом: какие дорожки попадут в файл, какой кодек будет использован, как изменится разрешение, какие фильтры применятся, что покажет ffprobe после обработки и как повторить команду для сотен файлов. Это программа для тех, кто готов работать через терминал ради точности, автоматизации и воспроизводимости результата.

Для разовой конвертации одного ролика удобнее начать с графического инструмента: HandBrake, XMedia Recode, Format Factory или Any Video Converter. Для монтажа с таймлайном лучше выбрать Shotcut или другой видеоредактор. Для просмотра файлов логичнее использовать VLC media player.

FFmpeg раскрывается в регулярной работе: пакетная конвертация, подготовка видео для сайта, серверное транскодирование, автоматическое создание превью, извлечение аудио, проверка параметров, ремультиплексирование без потерь, работа с несколькими дорожками и скрипты. Главное правило — не запускать сложную команду сразу на единственной копии файла. Сначала проверяется короткий фрагмент, затем анализируется результат через ffprobe, после этого команда применяется ко всей партии.

Список изменений

Ранние годы: формирование основы:

  • FFmpeg развивался как мультимедийный проект, объединяющий консольные инструменты и библиотеки. С самого начала важной частью архитектуры стало разделение задач: libavcodec отвечает за кодеки, libavformat — за контейнеры, libavfilter — за фильтры, ffmpeg — за командную обработку, ffprobe — за анализ, ffplay — за воспроизведение. Такая структура позволила использовать FFmpeg не только как программу в терминале, но и как набор библиотек для других приложений.
  • Ранние ветки закрепили базовую модель работы: входные файлы через -i , выбор контейнера, кодирование, декодирование, копирование потоков и консольный вывод прогресса. Именно в этой модели до сих пор построены базовые команды FFmpeg.

Переход к зрелому мультимедийному фреймворку:

  • По мере развития FFmpeg получил поддержку большого числа форматов, кодеков, устройств и протоколов. Важным направлением стало подключение внешних библиотек: libx264 для H.264, libx265 для HEVC, libvpx для VP8/VP9, libaom для AV1, libmp3lame для MP3, dav1d для AV1-декодирования и другие компоненты. Эти библиотеки не всегда включаются автоматически: сборка должна быть настроена соответствующими флагами.
  • Так FFmpeg превратился из набора утилит для энтузиастов в основу множества рабочих процессов: видеоконвертеров, медиаплееров, серверов транскодирования, систем загрузки видео, инструментов записи и приложений для анализа файлов.

Линейка 4.x: крупный шаг в сторону современных кодеков и фильтров:

  • Ветка 4.x стала важным этапом для современных сценариев обработки. В это время активно развивались новые фильтры, аппаратные возможности, поддержка современных видеокодеков и работа с контейнерами. Для пользователей это означало более широкий набор команд без перехода на отдельные инструменты: один и тот же FFmpeg мог кодировать, фильтровать, извлекать дорожки, создавать последовательности изображений и работать с потоками.

Линейка 5.x: обновление API и развитие кодеков:

  • FFmpeg 5.0 Lorentz вышел как крупный релиз с изменениями API и новыми возможностями. Профильные Linux-издания рассматривали выпуск FFmpeg 5.0 как значимое обновление популярного открытого мультимедийного набора, а материалы разработчиков VideoLAN выделяли существенные изменения API и статус крупного релиза.
  • Для конечного пользователя это выражалось не столько в новом интерфейсе, сколько в расширении поддерживаемых форматов, фильтров и библиотек. FFmpeg сохранял прежний принцип работы: команды в терминале, параметры на входе и выходе, контроль дорожек через -map .

Линейка 6.x: ежегодный ритм крупных выпусков и новые правила совместимости:

  • FFmpeg 6.0 Von Neumann добавил новые кодировщики, декодеры, фильтры и улучшения CLI, а также изменил подход к релизам: крупные релизы стали bump-ить ABI, а устаревшие API удаляются после нескольких крупных версий.
  • В ветке 6.1 появились дополнительные декодеры, фильтры, поддержка Vulkan decode hwaccel для H.264, HEVC и AV1, расширения VAAPI, новые возможности enhanced RTMP/FLV для HEVC, VP9 и AV1, а также изменения в ffprobe , включая alias -output_format для -of .
  • Для пользователей командной строки важна не только поддержка новых форматов, но и предсказуемость: старые команды могут требовать корректировки, если в новых ветках удаляются устаревшие опции или меняется поведение отдельных компонентов.

Линейка 7.x: многопоточная архитектура CLI и новые мультимедийные возможности:

  • В развитии FFmpeg 7.x заметную роль сыграл рефакторинг командного инструмента ffmpeg : компоненты транскодирующего конвейера — демультиплексоры, декодеры, фильтры, кодировщики и мультиплексоры — начали работать параллельно. Это улучшает пропускную способность и использование CPU, хотя заметный прирост не проявляется в задачах, где почти всё время уходит в один компонент, например в само видеокодирование.
  • В этот период также появились native VVC decoder и поддержка IAMF в libavformat , а CLI получил возможность настраивать IAMF-структуру через -stream_group .
  • Для пользователя это отражается в двух направлениях: расширяется набор современных медиаформатов, а внутренняя архитектура становится лучше приспособлена к сложным конвейерам обработки.

Линейка 8.x: дальнейшее развитие кодировщиков, аппаратного ускорения и инфраструктуры:

  • Ветка 8.x продолжила развитие аппаратного ускорения, современных кодеков и фильтров. Профильные Linux-издания выделяли среди изменений FFmpeg 8.1 поддержку D3D12 H.264 и AV1 encoding, метаданные LCEVC и экспериментальный xHE-AAC Mps212 MPEG-H decoder через libmpeghdec .
  • История FFmpeg показывает устойчивый вектор: программа не превращается в графический редактор, а углубляет консольную модель. Развитие идёт через поддержку новых форматов, оптимизацию библиотек, расширение фильтров, улучшение аппаратного ускорения, поддержку новых протоколов и повышение качества API для приложений.

Выберите ссылку для загрузки FFmpeg

Всего скачали: 11 | сегодня: 11

Скачать бесплатно
FFmpeg

Похожие программы на FFmpeg

из раздела "Редакторы и конвертеры"

Оставте свой отзыв о FFmpeg